<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 链式操作。就是可以点完了继续点
        // const arr = [1, 2, 3]
        // arr.map(el => el * 2).map(el => el * 3).filter(el => el >= 3).map()

        // 为什么上面可以一直点下去？因为调用每个map或者filter方法之后，返回值又是一个数组，所以可以链式操作

        // Q: Promise也是可以链式操作的？--->



        /* ==================== promise ===================== */

        // Promise 承诺 保证 许诺

        // 步骤
        // 1. 许下承诺，想好诺言成功和失败的情况。  
        // ---> 如果明年月入百万，捐66所希望小学。如果失败了呢，下次一定。
        //      new Promise()
        //      成功的情况， resolve(成功的结果)
        //      失败了呢    reject(reson失败的理由，原因)
        
        // 2. 获取诺言的一个结果 
        //    promise.then(res => {}).catch(err => {})


        // const p = new Promise(cbFn)
        // resolve / reject 是函数
        const promise = new Promise(function(resolve, reject){
            setTimeout(() => {
                if (Math.random() > 0.5){
                    resolve('成功了，欧耶')
                } else {
                    reject('哎呀，失败了，不小心，下次一定')
                }
            }, 2000);
        })
        console.log(promise)
        // promise这个对象，一开始是pendding状态，等待

        promise.then(res => {
            console.log(res)
        }).catch(err => {
            console.log(err)
        })
    </script>
</body>
</html>